fast_flush_area() should index the unmap request array using
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 7 Nov 2005 11:52:49 +0000 (12:52 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 7 Nov 2005 11:52:49 +0000 (12:52 +0100)
invcount, not i. Also, fix initialisation of pending_grant_handles:
it was happening too late, and the use of memset() was bogus.

Signed-off-by: Harry Butterworth <butterwo@uk.ibm.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6-xen-sparse/drivers/xen/blkback/blkback.c

index d15c062695c3ae4a6545159e805db4eb1995c42c..283fcd2ff68f8379835e870c01c20d0a9765ffd1 100644 (file)
@@ -114,10 +114,10 @@ static void fast_flush_area(int idx, int nr_pages)
                handle = pending_handle(idx, i);
                if (handle == BLKBACK_INVALID_HANDLE)
                        continue;
-               unmap[i].host_addr      = MMAP_VADDR(idx, i);
-               unmap[i].dev_bus_addr   = 0;
-               unmap[i].handle         = handle;
-               pending_handle(idx, i)  = BLKBACK_INVALID_HANDLE;
+               unmap[invcount].host_addr    = MMAP_VADDR(idx, i);
+               unmap[invcount].dev_bus_addr = 0;
+               unmap[invcount].handle       = handle;
+               pending_handle(idx, i) = BLKBACK_INVALID_HANDLE;
                invcount++;
        }
 
@@ -498,6 +498,9 @@ static int __init blkif_init(void)
        struct page *page;
        int ret;
 
+       for (i = 0; i < MMAP_PAGES; i++)
+               pending_grant_handles[i] = BLKBACK_INVALID_HANDLE;
+
        blkif_interface_init();
 
        page = balloon_alloc_empty_page_range(MMAP_PAGES);
@@ -518,8 +521,6 @@ static int __init blkif_init(void)
 
        blkif_xenbus_init();
 
-       memset(pending_grant_handles,  BLKBACK_INVALID_HANDLE, MMAP_PAGES);
-
        return 0;
 }